// DX9FeatureDefinitions.h

// Common Shader definitions
// ------------------------------------------------------------------------------------------------

// After effects
#define AE_TYPE_BLOOM_DOWNSAMPLE		1
#define AE_TYPE_BLOOM_BLUR				2
#define AE_TYPE_BLOOM_COMBINE			3
// Post-process Fog
#define AE_TYPE_FOG_LINEAR				4
#define AE_TYPE_FOG_SIMPLE				5
#define AE_TYPE_FOG_LAYERED				6

// FXAA
#define AE_TYPE_FXAA					7
// DOF
#define AE_TYPE_DOF						8
// HeadLight
#define AE_TYPE_HeadLight				9
// Gamma correction
#define AE_TYPE_Gamma					10


#define AE_TYPE_FOG_LINEAR_EXP			1
#define AE_TYPE_FOG_LINEAR_EXP2			2
//#define AE_TYPE_MOTIONBLUR              1
//#define AE_TYPE_RADIALBLUR              2
//#define AE_TYPE_BACKBUFFERCOPY          3
//#define AE_TYPE_GLOW                    4
//#define AE_TYPE_SHOCKWAVE               5
//#define AE_TYPE_DOF						6
//#define AE_TYPE_DISTORTION				7

#define AE_TYPE_DOF_TWO_KERNEL_HEXAGONS		1
#define AE_TYPE_DOF_COMBINE					3

/*#define AE_TYPE_SMART_BLUR              0
#define AE_TYPE_FOG                     1
#define AE_TYPE_GLOW                    2
#define AE_TYPE_DEPTH_BLUR              3
#define AE_TYPE_MILD_TO_WILD            4
#define AE_TYPE_GENERIC                 255
*/

// Volume Fog
#define VOLUMEFOG_TYPE_DEPTHTOTEXCORD_RGB		1
#define VOLUMEFOG_TYPE_DEPTHTORGB_COMPARE		2
#define VOLUMEFOG_TYPE_SUBSTRACTRGB_FOGCOLOR	3

// Advanced Water
#define ADVANCEDWATER_TYPE_REFRACTIONMASK		1
#define ADVANCEDWATER_TYPE_SURFACERENDER		2

// GPU Skin Mesh
//#define GPUSKINMESH_TYPE_SKINMESH1				1
#define GPUSKINMESH_TYPE_SKINMESH2					2
#define GPUSKINMESH_TYPE_SKINMESH2_PROJECTSHADOW	3
#define GPUSKINMESH_TYPE_SKINMESH2_RECEIVESHADOW	4
#define GPUSKINMESH_TYPE_SKINMESH2_ALPHADOFDEPTH	5

//#define GPUSKINMESH_TYPE_SHADOW1				5
//#define GPUSKINMESH_TYPE_SHADOW2				6
//#define GPUSKINMESH_TYPE_SHADOW3				7
//#define GPUSKINMESH_TYPE_SHADOW4				8
//#define GPUSKINMESH_TYPE_DEPTHSKINMESH1			9
//#define GPUSKINMESH_TYPE_DEPTHSKINMESH2			10
//#define GPUSKINMESH_TYPE_DEPTHSKINMESH3			11
//#define GPUSKINMESH_TYPE_DEPTHSKINMESH4			12


#define GPUSHADOWMAP_TYPE_CASTSHADOWMAP			1
#define GPUSHADOWMAP_TYPE_RECEIVESHADOW			2
#define GPUSHADOWMAP_TYPE_STUDIOTERRAIN_RENDER	3
#define GPUSHADOWMAP_TYPE_WORLDTERRAIN_RENDER	4
#define GPUSHADOWMAP_TYPE_RECEIVESHADOW_TERRAIN 5
#define GPUSHADOWMAP_TYPE_RECEIVESHADOW_UI		6
#define GPUSHADOWMAP_TYPE_ALPHADOFDEPTH			7
#define GPUSHADOWMAP_TYPE_OBJWITHSHADOW_RENDER  8






// Smart Blur - Rendering Passes
/*#define AE_SMART_BLUR_DOWNSCALE         0
#define AE_SMART_BLUR_BLUR              1
#define AE_SMART_BLUR_BLURD8            2
#define AE_SMART_BLUR_BLURD4            3
#define AE_SMART_BLUR_APPLY             4
#define AE_SMART_BLUR_GAUSSIAN          5
*/
// Glow - Rendering passes
//#define AE_GLOW_APPLY                   0

// Depth Blur - Rendering passes
//#define AE_DEPTH_BLUR_APPLY_PLANE       0

// Mild To Wild - Rendering passes
//#define AE_MILD_TO_WILD_APPLY           0

// Generic - Rendering cases
/*#define AE_GENERIC_COLOR_QUAD           0
#define AE_GENERIC_TEXTURE_QUAD         1
#define AE_GENERIC_TEXTURE_COLOR_QUAD   2
#define AE_GENERIC_TEXTURE_COLOR_QUAD_A 3
#define AE_GENERIC_FILTER_QUAD          4
#define AE_GENERIC_FILTER_COLOR_QUAD    5
#define AE_GENERIC_RESTORE_QUAD         6
#define AE_GENERIC_RESTORE_DEPTH        7
*/




// Vertex Shader definitions
// ------------------------------------------------------------------------------------------------
// Skinning information
#define VS_MAX_BONES 64

// Lighting type feature
//#define LIGHTING_NO_COLOR               0
//#define LIGHTING_USE_COLOR              1
//#define LIGHTING_VERTEX                 2
//#define LIGHTING_PIXEL                  3


// Pixel Shader definitions
// ------------------------------------------------------------------------------------------------

/////////////////////////////////////////////////////////////////////////////////////////
// common shader feature defines.
/////////////////////////////////////////////////////////////////////////////////////////

/*
// Custom Shader feature
#define CUSTOMSHADER_DISABLE            0

// Environment mapping feature
#define ENVMAP_OFF                      0
#define ENVMAP_ON                       1

// Fog feature
#define FOG_ON                          1
#define FOG_OFF                         0

// shadows
#define SHADOW_OFF                      0
#define SHADOW_ON                       1

// Vertex Specular feature
#define VERTEX_SPECULAR_OFF             0
#define VERTEX_SPECULAR_ON              1

/////////////////////////////////////////////////////////////////////////////////////////
// vertex shader feature defines.
/////////////////////////////////////////////////////////////////////////////////////////


#define VS_MAX_LIGHTS                   9
#define VS_MAX_LIGHTS_IN_ENGINE         VS_MAX_LIGHTS

#define VS_MAX_LIGHTS_PER_PASS          4
// Already defined ! #define VS_MAX_BONES                    50

// Vertex Transform feature
#define TRANSFORM_NONE                  0
#define TRANSFORM_NORMAL                1
#define TRANSFORM_SKINNING              2
#define TRANSFORM_MORPHING              3

// Texture Transform feature
#define TEXTRANSFORM_NO_TEX_COORD       0
#define TEXTRANSFORM_NONE               1
#define TEXTRANSFORM_NORMAL             2

// Color Source feature
#define COLORSOURCE_DIFFUSE             0
#define COLORSOURCE_DIFFUSE2X           1
#define COLORSOURCE_CONSTANT            2
#define COLORSOURCE_VERTEX_COLOR        3
#define COLORSOURCE_FULL_LIGHT          4
#define COLORSOURCE_INVERSE_DIFFUSE     5

// Lighting type feature
#define LIGHTING_NO_COLOR               0
#define LIGHTING_USE_COLOR              1
#define LIGHTING_VERTEX                 2
#define LIGHTING_PIXEL                  3
#define LIGHTING_REFLECTION             4
#define LIGHTING_REFRACTION             5
#define LIGHTING_PROJECTIVE_TEXTURE		6

// light type feature
#define LIGHT_TYPE_NONE                 0
#define LIGHT_TYPE_DIRECT               1
#define LIGHT_TYPE_OMNI                 2
#define LIGHT_TYPE_SPOT                 3
#define LIGHT_TYPE_CYLINDRICAL_SPOT     4
#define LIGHT_TYPE_OMNI_INVERTED        5

// Lighting Dual Side
#define DUALSIDE_OFF                    0
#define DUALSIDE_ON                     1

/////////////////////////////////////////////////////////////////////////////////////////
// pixel shader feature defines.
/////////////////////////////////////////////////////////////////////////////////////////

// Base map
#define BASEMAP_OFF                     0
#define BASEMAP_ON                      1

// Diffuse PPL
#define DIFFUSE_PPL_OFF                 0
#define DIFFUSE_PPL_ON                  1

// Specular PPL
#define SPECULAR_PPL_OFF                0
#define SPECULAR_PPL_ON                 1

// Apply 2X on final color
#define COLOR2X_OFF                     0
#define COLOR2X_ON                      1

// ambient lighting
#define DONT_ADD_AMBIENT                0
#define ADD_AMBIENT                     1


*/
